Customnormalize ================= 对输入字符串进行一系列自定义的文本标准化处理。 该算子按顺序执行以下操作: 1. 将所有大写字母转换为小写字母。 2. 去除字符串首尾的空白字符 (space, ``\t``, ``\n``, ``\v``, ``\f``, ``\r``)。 3. 删除字符串中预定义的一组标点符号 (例如 ``.*()\"``)。 4. 标准化缩写词,例如,将 ``we 're`` 转换为 ``we're``。 5. 展开常见的英文缩写词 (例如, ``n't`` -> `` not``, ``'ll`` -> `` will``, ``i'm`` -> ``i am`` 等)。 6. 标准化问号和感叹号,例如合并连续的符号 (``!!!`` -> ``!``) 并在符号和单词之间添加空格 (``Hello?`` -> ``Hello ?``)。 7. 去除字符串首尾预定义的另一组字符 (例如 ``[\\s,:;\\-&'\"]+``)。 8. 再次去除字符串首尾的空白字符。 9. 如果处理后的字符串长度超过300个字符,则将其截断为300个字符。 10. 在字符串首部添加前缀 `` ``,尾部添加后缀 `` ``。 输入: - **str** - 输入字符串的地址。 - **str_len** - 输入字符串的长度。 - **tmp_str** - 用于中间计算的临时缓冲区的地址,其大小应足以容纳处理过程中的字符串。 - **params** - 一个 ``long long`` 类型的数组,其中每个元素是指向标准化操作所需的配置字符串或参数的指针。 - **core_mask** - 核掩码 (仅共享存储版本需要)。 输出: - **result** - 存储标准化后字符串的输出缓冲区的地址。 - **result_len** - 指向一个 ``int`` 变量的指针,用于存储结果字符串的长度。 支持平台: ``FT78NE`` ``MT7004`` .. note:: - 该算子不区分数据类型 **共享存储版本:** .. c:function:: void customnormalize_s(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params, int core_mask) **C调用示例:** .. code-block:: c :linenos: :emphasize-lines: 14 #include #include #include "customnormalize.h" int main() { char *str = (char *)0xA0000000; // str in DDR char *result = (char *)0xB0000000; // result in DDR char *tmp_str = (char *)0xC0000000; // tmp_str in DDR int str_len = 50; // 假设长度 int result_len = 0; long long params[20]; // 假设参数已填充 int core_mask = 0xff; customnormalize_s(str, str_len, result, &result_len, tmp_str, params, core_mask); return 0; } **私有存储版本:** .. c:function:: void customnormalize_p(char *str, int str_len, char *result, int *result_len, char *tmp_str, long long *params) **C调用示例:** .. code-block:: c :linenos: :emphasize-lines: 13 #include #include #include "customnormalize.h" int main() { char *str = (char *)0x10000000; // str in L2 char *result = (char *)0x10001000; // result in L2 char *tmp_str = (char *)0x10002000; // tmp_str in L2 int str_len = 50; // 假设长度 int result_len = 0; long long params[20]; // 假设参数已填充 customnormalize_p(str, str_len, result, &result_len, tmp_str, params); return 0; }